package chebu.GPS;
import java.sql.SQLException;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;

import chebu.dao.DatabaseHelper;
import chebu.dao.Localizaciones;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import com.google.android.maps.Projection;
import com.j256.ormlite.android.apptools.OpenHelperManager;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;


public class gpsActivity extends MapActivity {
    /** Called when the activity is first created. */


	private static final String TAG = MainActivity.class.getSimpleName();
	private MapController controlMapa;
	private MapView mapView;
	private DatabaseHelper dbHelper;
	private  GeoPoint geoPoint = null ;
	private Button btnSatelite = null;
	private Button btnCentrar = null;
	private Button btnAnimar = null;
	private Button btnMover = null;
	private Double latitudActual = null; 
	private Double longitudActual = null; 
	
	@Override
	protected void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		Log.d(TAG,"onCreate");
        setContentView(R.layout.maps);
        
      //Obtenemos una referencia a los controles
        mapView = (MapView)findViewById(R.id.mapview);
        btnSatelite = (Button)findViewById(R.id.BtnSatelite);
        btnCentrar = (Button)findViewById(R.id.BtnCentrar);
        btnAnimar = (Button)findViewById(R.id.BtnAnimar);
        btnMover = (Button)findViewById(R.id.BtnMover);

        //Controlador del mapa
        controlMapa = mapView.getController();
 
        //Mostramos los controles de zoom sobre el mapa
        mapView.setBuiltInZoomControls(true);
        	
		
		//Obtengo info Bae
		dbHelper = new DatabaseHelper(this);
		
		Log.d(TAG,"Voy a abrir la BD");
							
		OrmLiteSqliteOpenHelper helper = null;	
		
		helper = OpenHelperManager.getHelper(getApplicationContext(), DatabaseHelper.class);
		Dao<Localizaciones, Integer> localizacionesDao;
		List<Localizaciones> localizaciones = null;
		try {
			localizacionesDao = helper.getDao(Localizaciones.class);
			localizaciones = localizacionesDao.queryForAll();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			Log.e(TAG,"Error",e);
		}
		
		//Añadimos la capa de marcas
		//List<Overlay> capas = mapView.getOverlays();
		
		List<Overlay> mapOverlays = mapView.getOverlays();
		 Drawable drawable = this.getResources().getDrawable(R.drawable.marcador_google_maps);
		 GpsItemizedOverlay itemizedoverlay = new GpsItemizedOverlay(drawable,this); 

		Log.d(TAG,"Voy a barrer la lista");
		GeoPoint point = null;
		for(Localizaciones loc: localizaciones)
		{
			
			Log.d(TAG, "La  posicion es lat="+loc.getLatitud()+"+lng="+loc.getLongitud());
			
			 int latitud = (int)( loc.getLatitud() * 1e6);
			 int longitud =(int)( loc.getLongitud() * 1e6); 
			 Log.d(TAG, "La  posicion es lat="+latitud+"+lng="+longitud);
			 point = new GeoPoint(latitud,longitud);
			 OverlayItem overlayitem = new OverlayItem(point, "Posicion dia="+loc.getFecha(), "Ubicacio Latitud="+loc.getLatitud()+"|longitud="+loc.getLongitud());

			 itemizedoverlay.addOverlay(overlayitem);
			
			this.latitudActual = loc.getLatitud();
			this.longitudActual = loc.getLongitud();
		}
		controlMapa.setCenter(point);
		mapOverlays.add(itemizedoverlay);
		//mapView.postInvalidate();
		
		Log.d(TAG, "db close");
		
		dbHelper.close();
        
        btnSatelite.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(mapView.isSatellite())
					mapView.setSatellite(false);
				else
					mapView.setSatellite(true);
			}
		});
        
        btnCentrar.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {

				Log.d(TAG, "Centrando mapa en lat="+latitudActual.intValue()+"+lng="+longitudActual.intValue());
				
				int latitud = (int)( latitudActual * 1e6);
				int longitud =(int)( longitudActual * 1e6);
				
				GeoPoint loc = new GeoPoint(latitud, longitud);
				
				controlMapa.setCenter(loc);
				controlMapa.setZoom(10);
			}


		});
        
        btnAnimar.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				
				int latitud = (int)( latitudActual * 1e6);
				int longitud =(int)( longitudActual * 1e6);
				
				GeoPoint loc = new GeoPoint(latitud, longitud);
				
				controlMapa.animateTo(loc);
				
				int zoomActual = mapView.getZoomLevel();
				for(int i=zoomActual; i<10; i++)
				{
					controlMapa.zoomIn();
				}
			}
		});
        
        btnMover.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				
				controlMapa.scrollBy(40, 40);
			}
		});
        
		
		Log.d(TAG,"Listo no created");
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}
	

}




